import originJsonp from 'jsonp'

/**
 * 根据参数拼接url地址
 * @param data {Set} 参数键值对
 * @return url
 */
export function param (data) {
  let url = ''
  for (var k in data) {
    let value = data[k] !== undefined ? data[k] : ''
    url += '&' + k + '=' + encodeURI(value)
  }
  // 防止只有一个参数时出现url?&key=value的情况，使用substring切割
  return url ? url.substring(1) : ''
}

/**
 * jsonp跨域获取数据
 * @param url {String} url地址
 * @param data {Set} 参数键值对
 * @param option {Set} 基本设置
 * @returns {Promise<any>}
 */
export default function jsonp (url, data, option) {
  url += (url.indexOf('?') < 0 ? '?' : '&') + param(data)
  return new Promise((resolve, reject) => {
    originJsonp(url, option, (err, data) => {
      if (!err) {
        resolve(data)
      } else {
        reject(err)
      }
    })
  })
}
